<?php

//
//  Copyright (C) 2004-2006  Autodesk, Inc.
//
//  This library is free software; you can redistribute it and/or
//  modify it under the terms of version 2.1 of the GNU Lesser
//  General Public License as published by the Free Software Foundation.
//
//  This library is distributed in the hope that it will be useful,
//  but WITHOUT ANY WARRANTY; without even the implied warranty of
//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
//  Lesser General Public License for more details.
//
//  You should have received a copy of the GNU Lesser General Public
//  License along with this library; if not, write to the Free Software
//  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
//

?>

<?php
require_once("config.php");
require_once("utils.php");
require_once(ROOT_DIR_CLASES.'/cCliente.php');
require_once(ROOT_DIR_CLASES.'/posiMovilReduce.php');
require_once 'JSON.php';

class QueryHistorico2
{
	private $args = null;


	function __construct($args)
	{
		$this->args = $args;
	}



	function Execute()
	{
		$result = array();
		$cuenta = $this->args['CUENTA'];
		$fechai = $this->args['diai'].'/'.$this->args['mesi'].'/'.$this->args['anoi']." ".$this->args['horaInicio'].":00";
		$fechaf = $this->args['diaf'].'/'.$this->args['mesf'].'/'.$this->args['anof']." ".$this->args['horaFin'].":00";
		$filtrarCeros = ($this->args["filtrarCeros"] == 'true') ? 1 : 0;
        if(isset($this->args["ULTHORA"]) && $this->args["ULTHORA"]==1){
        	$horaServer = time();
        	$res = 0;
        	$zonaMovil = BykomCliente::getHoursFromZoneGMT("abmacodigos",$cuenta);
		   	$zonaAdmin = BykomCliente::getHoursFromZoneGMT("adminconfig","");
		   	if($zonaMovil->cantidad()!=0 && $zonaAdmin->cantidad()!=0 && $zonaMovil->campo("timeZone",0) != $zonaAdmin->campo("timeZone",0) ){
		   		switch($zonaMovil->campo("tipo",0)){
		   			case 1: $horaMovil = $zonaMovil->campo("horas",0); break;
		   			case 2: $horaMovil = (-1)*$zonaMovil->campo("horas",0); break;
		   		}
		   		switch($zonaAdmin->campo("tipo",0)){
		   			case 1: $horaAdmin = $zonaAdmin->campo("horas",0); break;
		   			case 2: $horaAdmin = (-1)*$zonaAdmin->campo("horas",0); break;
		   		}
		   		$res = $horaAdmin - ($horaMovil);
		   		$res = $res * 60;
		   	}
	   		$fechai = $horaServer - (60*60);
   			$fechai += $res;
   			$fechaf = $horaServer + (60*60);
   			$fechaf += $res;
   			$fechaMysqlI = date("Y-m-d H:i",$fechai);
   			$fechaMysqlF = date("Y-m-d H:i",$fechaf);
	    }else{
	        $fechaMysqlI = $this->args['anoi'].'-'.$this->args['mesi'].'-'.$this->args['diai']." ".$this->args['horaInicio'].':00';
	    	$fechaMysqlF = $this->args['anof'].'-'.$this->args['mesf'].'-'.$this->args['diaf']." ".$this->args['horaFin'].':00';
		}

		/*echo "$res <br>";
   		echo"<br>HORA SERVER::".date("Y-m-d H:i",$horaServer);
   		echo"<br>HORA INICIAL ::".$fechaMysqlI;
   		echo"<br>HORA FINAL ::".$fechaMysqlF;*/
   		
		$ddeRecord = $this->args['DDERECORD'];
		$limit = $this->args['LIMIT'];

        //--------------------------------------
        //$datosPosicionamiento = BykomCliente::Consulta_Historico_Avl2($cuenta,$fechaMysqlI,$fechaMysqlF,$ddeRecord,$limit);
		if($ddeRecord==0){
        	$datosPosicionamiento 	= BykomCliente::Consulta_Historico_Avl_Total_Test($cuenta,$fechaMysqlI,$fechaMysqlF,"","",$filtrarCeros);
        	$cant_reg = $datosPosicionamiento->cantidad();
			if($cant_reg>$limit){
	   			$cant_reg		= $limit;
		   	}
		}else{
        	$datosPosicionamiento 	= BykomCliente::Consulta_Historico_Avl_Total_Test($cuenta,$fechaMysqlI,$fechaMysqlF,$ddeRecord,$limit,$filtrarCeros);
        	$cant_reg = $datosPosicionamiento->cantidad();
		}
        if($datosPosicionamiento->cantidad()>0){
        	if($ddeRecord==0){
	        	$obj = new stdClass();
	        	$cont = $velocidadTotal= $velocidadPromedio = $velocidadMax = 0 ;
			   	for($i=0;$i<$datosPosicionamiento->cantidad();$i++){
			   		$velActual = (int)$datosPosicionamiento->campo("VELOCIDAD",$i);
			 	  	if($velActual!= 0){
			 	  		$velocidadTotal += $velActual;
			 	  		$cont++;
			 	  	}
			   		if($velocidadMax < $velActual){
						$velocidadMax = $velActual;
					}
			   	}
			   	if($cont != 0){
			   		$velocidadPromedio  = round($velocidadTotal/$cont,0);
			   	}
		
			   	$distanciaTotal = BykomCliente::Consulta_Distancia_Total_Avl($datosPosicionamiento);
			   	$distanciaTotalEntero = substr($distanciaTotal, 0 , strpos($distanciaTotal,','));
			   	$distanciaTotalMetros = substr($distanciaTotal, strpos($distanciaTotal,',')+1);
			   	$distanciaTotalMetros .= substr("000", strlen($distanciaTotalMetros));
		
			   	$distanciaTotal = (($distanciaTotalEntero == "0" || trim($distanciaTotalEntero) == "") ? "" :$distanciaTotalEntero . "km ")
			   					 . (($distanciaTotalMetros == "0" || trim($distanciaTotalMetros) == "") ? "" : $distanciaTotalMetros . "m");
			   	$distanciaTotal = (trim($distanciaTotal) == "")  ? "0m" : $distanciaTotal;
	        	
			   	$obj->fechaIni 			= $fechaMysqlI;
	        	$obj->fechaFin 			= $fechaMysqlF;
			   	$obj->velocidadMaxima	= $velocidadMax;
			   	$obj->velocidadPromedio = $velocidadPromedio;
			   	$obj->distanciaTotal 	= $distanciaTotal;
			   	
			   	array_push($result, $obj);
        	}
	        for($i = 0;  $i < $cant_reg; $i++ ) {
	        	$posiMovilReduce = new posiMovilReduce();
	        	$posiMovilReduce->id = $datosPosicionamiento->campo('ORDER_ID',$i);
	    		$posiMovilReduce->longitud = quitCero($datosPosicionamiento->campo('LONGITUD',$i));
	        	$posiMovilReduce->latitud  = quitCero($datosPosicionamiento->campo('LATITUD',$i));
	        	$posiMovilReduce->velocidad = $datosPosicionamiento->campo('VELOCIDAD',$i);
	        	$posiMovilReduce->sentido = $datosPosicionamiento->campo('SENTIDO',$i);
	        	$posiMovilReduce->sentidoPalabra = BykomCliente::Obtener_Palabra_Sentido($datosPosicionamiento->campo('SENTIDO',$i));
	        	$posiMovilReduce->satelites = $datosPosicionamiento->campo('SATELITES',$i);
	        	$posiMovilReduce->direccionAbrev = BykomCliente::Obtener_Direccion_Abreviada($datosPosicionamiento->campo('APROXIMACION',$i));
	        	$posiMovilReduce->evento = $datosPosicionamiento->campo('EVENTO',$i);
	        	$posiMovilReduce->validez = BykomCliente::Obtener_Palabra_Validez($datosPosicionamiento->campo('VALIDEZ',$i));
	        	$posiMovilReduce->fechaMensaje = $datosPosicionamiento->campo('FECHA_MENSAJE',$i);
	        	$posiMovilReduce->fechaRecibido = $datosPosicionamiento->campo('FECHA_RECIBIDO',$i);
	        	$posiMovilReduce->statusZona = $datosPosicionamiento->campo('STATUS_ZONA',$i);
	        	$posiMovilReduce->edadMensaje = $datosPosicionamiento->campo('EDAD_MENSAJE',$i);
	        	$posiMovilReduce->soloLogistica = $datosPosicionamiento->campo('SOLO_LOGISTICA2',$i);
	        	if ($posiMovilReduce->soloLogistica == false) {
//	        		$alfaAuxNombre = BykomCliente::Obtener_Descripcion_Alfa($datosPosicionamiento->campo('CODIGOALFA',$i));
//					$posiMovilReduce->codigoAlfa = htmlentities($alfaAuxNombre->campo('NOMBRE',0));
					$posiMovilReduce->codigoAlfa = htmlentities($datosPosicionamiento->campo('COD_ALFA',$i));
	        	}else {
	        		$posiMovilReduce->codigoAlfa = "";
	        	}
	
				if ($posiMovilReduce->statusZona == 390) {
	        		$posiMovilReduce->zonaProhibida = $datosPosicionamiento->campo('ZONA', $i);
	        	}
	        	array_push($result, $posiMovilReduce);
	    	}
        }
		return $result;
	}
}
?>